using System;
using System.IO;

namespace JiveMessengerLinux
{
    public static class ImageManipulation
    {
        public static byte[] LoadImageData(string filePath)
        {

            FileStream fs = new FileStream(filePath, FileMode.Open,

                                           FileAccess.Read);

            BinaryReader br = new BinaryReader(fs);

            byte[] imageBytes = br.ReadBytes((int)fs.Length);

            br.Close();

            fs.Close();

            return imageBytes;

        }



        public static void SaveImageData(byte[] imageData, string filePath)
        {

            FileStream fs = StaticMethods.WaitForFile(filePath, FileMode.Create, FileAccess.Write);// new FileStream(filePath, FileMode.Create, FileAccess.Write);
            if (fs == null)
            {
                throw new IOException("File is in use: "+filePath);
            }

            BinaryWriter bw = new BinaryWriter(fs);

            bw.Write(imageData);

            bw.Close();

            fs.Close();

        }



//        public static BitmapSource CreateImage(byte[] imageData, int decodePixelWidth, int decodePixelHeight)
//        {
//
//            if (imageData == null) return null;
//
//
//
//            BitmapImage result = new BitmapImage();
//
//            result.BeginInit();
//
//            if (decodePixelWidth > 0)
//            {
//
//                result.DecodePixelWidth = decodePixelWidth;
//
//            }
//
//            if (decodePixelHeight > 0)
//            {
//
//                result.DecodePixelHeight = decodePixelHeight;
//
//            }
//
//            result.StreamSource = new MemoryStream(imageData);
//
//            result.CreateOptions = BitmapCreateOptions.None;
//
//            result.CacheOption = BitmapCacheOption.Default;
//
//            result.EndInit();
//
//            return result;
//
//        }



//        public static byte[] GetEncodedImageData(ImageSource image, string preferredFormat)
//        {
//
//            byte[] result = null;
//
//            BitmapEncoder encoder = null;
//
//            switch (preferredFormat.ToLower())
//            {
//
//                case ".jpg":
//                    case ".jpeg":
//
//                    encoder = new JpegBitmapEncoder();
//
//                    break;
//
//
//
//                    case ".bmp":
//
//                    encoder = new BmpBitmapEncoder();
//
//                    break;
//
//
//
//                    case ".png":
//
//                    encoder = new PngBitmapEncoder();
//
//                    break;
//
//
//
//                    case ".tif":
//
//                    case ".tiff":
//
//                    encoder = new TiffBitmapEncoder();
//
//                    break;
//
//
//
//                    case ".gif":
//
//                    encoder = new GifBitmapEncoder();
//
//                    break;
//
//
//
//                    case ".wmp":
//
//                    encoder = new WmpBitmapEncoder();
//
//                    break;
//
//            }
//
//
//
//            if (image is BitmapSource && encoder!= null)
//            {
//
//                MemoryStream stream = new MemoryStream();
//
//                encoder.Frames.Add(
//
//                    BitmapFrame.Create(image as BitmapSource));
//
//                encoder.Save(stream);
//
//                stream.Seek(0, SeekOrigin.Begin);
//
//                result = new byte[stream.Length];
//
//                BinaryReader br = new BinaryReader(stream);
//
//                br.Read(result, 0, (int)stream.Length);
//
//                br.Close();
//                //stream.Dispose();
//                stream.Close();
//
//            }
//
//            return result;
//
//        }
    }         
}

